﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace GDF_kaart_inlezen
{
    class DataContainer
    {
        public DataTable Coordinate,
                         CoordinateSet,
                         NewNode,
                         Edge,
                         EdgeSet,
                         Face,
                         FaceSet,
                         LineFeature,
                         PointFeature,
                         FeatureSet,
                         ComplexFeature,
                         AreaFeature,
                         SegmentedAttributeSet,
                         Name,
                         Attribute,
                         SegmentedAttribute;

        /// <summary>
        /// This is some epic jizz bitches.
        /// </summary>
        public DataContainer()
        {
            Coordinate = new DataTable("Coordinate");
            Coordinate.Columns.Add("CoordinateSetId", typeof(int));
            Coordinate.Columns.Add("Order", typeof(int));
            Coordinate.Columns.Add("X", typeof(int));
            Coordinate.Columns.Add("Y", typeof(int));
            Coordinate.Columns.Add("SectionId", typeof(int));

            CoordinateSet.Columns.Add("CoordinateSetId", typeof(int));
            CoordinateSet.Columns.Add("SectionId", typeof(int));

            NewNode.Columns.Add("NewNodeId", typeof(int));
            NewNode.Columns.Add("CoordinateSetId", typeof(int));
            NewNode.Columns.Add("StatusCode", typeof(int));
            NewNode.Columns.Add("SectionId", typeof(int));

            Edge.Columns.Add("EdgeId", typeof(int));
            Edge.Columns.Add("FromNodeId", typeof(int));
            Edge.Columns.Add("ToNodeId", typeof(int));
            Edge.Columns.Add("LeftFaceId", typeof(int));
            Edge.Columns.Add("RightFaceId", typeof(int));
            Edge.Columns.Add("CoordinateId", typeof(int));
            Edge.Columns.Add("StatusCode", typeof(int));
            Edge.Columns.Add("SectionId", typeof(int));

            EdgeSet.Columns.Add("EdgeId", typeof(int));
            EdgeSet.Columns.Add("OtherId", typeof(int));
            EdgeSet.Columns.Add("OtherType", typeof(int));
            EdgeSet.Columns.Add("EdgeOrientation", typeof(int));
            EdgeSet.Columns.Add("SectionId", typeof(int));

            Face.Columns.Add("FaceId", typeof(int));
            Face.Columns.Add("SectionId", typeof(int));

            FaceSet.Columns.Add("AreaId", typeof(int));
            FaceSet.Columns.Add("FaceId", typeof(int));
            FaceSet.Columns.Add("SectionId", typeof(int));

            LineFeature.Columns.Add("LineFeatureId", typeof(int));
            LineFeature.Columns.Add("FeatureDefinitionId", typeof(int));
            LineFeature.Columns.Add("SplitIndicator", typeof(int));
            LineFeature.Columns.Add("MaxX", typeof(int));
            LineFeature.Columns.Add("MaxY", typeof(int));
            LineFeature.Columns.Add("MinX", typeof(int));
            LineFeature.Columns.Add("MinY", typeof(int));
            LineFeature.Columns.Add("FromPointFeatureId", typeof(int));
            LineFeature.Columns.Add("ToPointFeatureId", typeof(int));
            LineFeature.Columns.Add("MinZoomLevel", typeof(int));
            LineFeature.Columns.Add("SectionId", typeof(int));

            PointFeature.Columns.Add("PointFeatureId", typeof(int));
            PointFeature.Columns.Add("FeatureDefinitionId", typeof(int));
            PointFeature.Columns.Add("NodeId", typeof(int));
            PointFeature.Columns.Add("X", typeof(int));
            PointFeature.Columns.Add("Y", typeof(int));
            PointFeature.Columns.Add("MinZoomLevel", typeof(int));
            PointFeature.Columns.Add("SectionId", typeof(int));

            FeatureSet.Columns.Add("FeatureId", typeof(int));
            FeatureSet.Columns.Add("FeatureType", typeof(int));
            FeatureSet.Columns.Add("SectionId", typeof(int));

            ComplexFeature.Columns.Add("ComplexFeatureId", typeof(int));
            ComplexFeature.Columns.Add("FeatureDefinitionId", typeof(int));
            ComplexFeature.Columns.Add("FromComplexFeatureId", typeof(int));
            ComplexFeature.Columns.Add("ToComplexFeatureId", typeof(int));
            ComplexFeature.Columns.Add("MaxX", typeof(int));
            ComplexFeature.Columns.Add("MaxY", typeof(int));
            ComplexFeature.Columns.Add("MinX", typeof(int));
            ComplexFeature.Columns.Add("MinY", typeof(int));
            ComplexFeature.Columns.Add("MinZoomLevel", typeof(int));
            ComplexFeature.Columns.Add("SectionId", typeof(int));

            AreaFeature.Columns.Add("AreaFeatureId", typeof(int));
            AreaFeature.Columns.Add("FeatureDefinitionId", typeof(int));
            AreaFeature.Columns.Add("SplitIndicator", typeof(int));
            AreaFeature.Columns.Add("MaxX", typeof(int));
            AreaFeature.Columns.Add("MaxY", typeof(int));
            AreaFeature.Columns.Add("MinX", typeof(int));
            AreaFeature.Columns.Add("MinY", typeof(int));
            AreaFeature.Columns.Add("MinZoomLevel", typeof(int));
            AreaFeature.Columns.Add("SectionId", typeof(int));

            SegmentedAttributeSet.Columns.Add("SegmentedAttributeId", typeof(int));
            SegmentedAttributeSet.Columns.Add("FeatureId", typeof(int));
            SegmentedAttributeSet.Columns.Add("FeatureType", typeof(int));
            SegmentedAttributeSet.Columns.Add("SectionId", typeof(int));

            Name.Columns.Add("NameId", typeof(int));
            Name.Columns.Add("SegmentedAttributeId", typeof(int));
            Name.Columns.Add("Name", typeof(string));
            Name.Columns.Add("SectionId", typeof(int));

            SegmentedAttribute.Columns.Add("SegmentedAttributeId", typeof(int));
            SegmentedAttribute.Columns.Add("Direction", typeof(int));
            SegmentedAttribute.Columns.Add("SectionId", typeof(int));

            Attribute.Columns.Add("AttributeId", typeof(int));
            Attribute.Columns.Add("SegmentedAtrributeId", typeof(int));
            Attribute.Columns.Add("SectionId", typeof(int));
        }
    }
}
